Для навигации по CDaoRecordset используется ряд методов. Давайте рассмотрим самые простые. Но сначала давайте поговорим о записи. При работе обычно какая то запись бывает текущей. Это та запись, на которой стоит логический курсор. Этот курсор может быть и физический, на экране например. Записи расположены подряд. И, например, просматривая записи мы сдвигаем курсор. Смотрите на рисунок ниже, здесь перечислен ряд функций.

Первое это то, что у набора записей есть начало и конец. И мы должны уметь определять, что дошли до начала или конца. Начало определяет IsBof, а конец определяет IsEof. Есть маленькая тонкость в использовании этих функций. Дело в том, чтобы набор записей узнал, что он попал в конец он должен уже выйти за пределы записей, а это приведет к появлению исключения. Появится на экране табличка. Вот после этого можно будет определить, что мы дошли до конца или начала.
MoveFirst - в начало MoveLast - в конец MoveNext - вперед MovePrev - назад
Вот теперь и получается, что, чтобы дойти до конца и определить конец набора записей без всяких левых сообщений нам надо использовать и try и IsEof. Вот так например:
try
{
if (cDaoRset->IsEOF()) AfxMessageBox("eof");
else
{
cDaoRset->MoveNext();
}
}
catch(...)
{
}
В начало тоже самое, только проверка на IsBof и метод MovePrev.